//#include "patientlogin.h"
//#include "patientregistration.h"
//#include "patientdashboard.h"
//#include <QVBoxLayout>
//#include <QHBoxLayout>
//#include <QMessageBox>
//#include <QPalette>
//#include <QFont>
//#include <QSpacerItem>
//#include "messagetype.h"
//#include "patientdashboard.h"
//#include <QPointer>

//PatientLogin::PatientLogin(QTcpSocket *socket, QWidget *parent)
//    : QWidget(parent), tcpSocket(socket), dashboard(nullptr) { // 添加 dashboard 指针初始化

//    // 设置窗口标题和大小


//    // 设置背景颜色为柔和的浅蓝色，增强舒适感
//    QPalette palette = this->palette();
//    palette.setColor(QPalette::Window, QColor(220, 240, 255)); // 柔和的浅蓝色
//    this->setPalette(palette);
//    this->setAutoFillBackground(true);

//    // 设置字体
//    QFont labelFont("Arial", 12, QFont::Bold);
//    QFont inputFont("Arial", 11);

//    QVBoxLayout *layout = new QVBoxLayout(this);
//    layout->setContentsMargins(30, 30, 30, 30); // 四周增加间距
//    layout->setSpacing(20); // 控件之间增加间距

//    // 角色选择
//    QLabel *roleLabel = new QLabel("选择角色", this);
//    roleLabel->setFont(labelFont);
//    layout->addWidget(roleLabel);

//    roleComboBox = new QComboBox(this);
//    roleComboBox->addItems({"患者", "医生"});
//    roleComboBox->setFont(inputFont);
//    layout->addWidget(roleComboBox);

//    // 用户名
//    QLabel *usernameLabel = new QLabel("用户名", this);
//    usernameLabel->setFont(labelFont);
//    layout->addWidget(usernameLabel);

//    usernameEdit = new QLineEdit(this);
//    usernameEdit->setPlaceholderText("请输入用户名");
//    usernameEdit->setFont(inputFont);
//    layout->addWidget(usernameEdit);

//    // 密码
//    QLabel *passwordLabel = new QLabel("密码", this);
//    passwordLabel->setFont(labelFont);
//    layout->addWidget(passwordLabel);

//    passwordEdit = new QLineEdit(this);
//    passwordEdit->setPlaceholderText("请输入密码");
//    passwordEdit->setEchoMode(QLineEdit::Password);
//    passwordEdit->setFont(inputFont);
//    layout->addWidget(passwordEdit);

//    // 添加间隔
//    layout->addItem(new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding));

//    // 登录按钮和注册按钮水平布局
//    QHBoxLayout *buttonLayout = new QHBoxLayout();
//    buttonLayout->setSpacing(20); // 按钮之间的间距

//    loginButton = new QPushButton("登录", this);
//    loginButton->setFont(labelFont);
//    loginButton->setFixedSize(100, 40);
//    loginButton->setStyleSheet("background-color: #4CAF50; color: white; border-radius: 10px;");
//    buttonLayout->addWidget(loginButton);

//    registerButton = new QPushButton("注册", this);
//    registerButton->setFont(labelFont);
//    registerButton->setFixedSize(100, 40);
//    registerButton->setStyleSheet("background-color: #2196F3; color: white; border-radius: 10px;");
//    buttonLayout->addWidget(registerButton);

//    layout->addLayout(buttonLayout);

//    // 连接信号和槽
//    connect(loginButton, &QPushButton::clicked, this, &PatientLogin::onLoginButtonClicked);
//    connect(registerButton, &QPushButton::clicked, this, &PatientLogin::onRegisterButtonClicked);
//}

//void PatientLogin::onLoginButtonClicked() {
//    if (roleComboBox->currentText() != "患者") {
//        QMessageBox::warning(this, "错误", "此客户端仅限患者使用");
//        return;
//    }

//    QMap<QString, QString> loginData;
//    loginData.insert("type", PATIENTUSRDATABASE);
//    loginData.insert("databaseoperator", QString::number(SELECT));
//    loginData.insert("name", usernameEdit->text());
//    loginData.insert("passward", passwordEdit->text());
//    loginData.insert("senderType", PATIENTMESSAGE);
//    QByteArray data = mapToByteArrayCustom(loginData);

//    tcpSocket->connectToHost("127.0.0.1", 12345);
//    if (tcpSocket->waitForConnected(3000)) {
//        tcpSocket->write(data);
//        tcpSocket->flush();

//        if (tcpSocket->waitForReadyRead(3000)) {
//            QByteArray responseData = tcpSocket->readAll();
//            if (!responseData.isEmpty()) { // 假设 responseData 包含登录成功的信息
//                // 关闭当前登录窗口并创造下一个窗口
//                if (dashboard) {
//                    dashboard->close(); // 确保之前的窗口关闭
//                }
//                dashboard = new PatientDashboard(tcpSocket, nullptr);
//                dashboard->show();
//                this->close();  // 使用 close() 来关闭登录窗口
//            } else {
//                QMessageBox::warning(this, "登录失败", "用户名或密码错误");
//            }
//        } else {
//            QMessageBox::warning(this, "登录失败", "无法连接到服务器");
//        }
//    } else {
//        QMessageBox::warning(this, "登录失败", "无法连接到服务器");
//    }
//}

//void PatientLogin::onRegisterButtonClicked() {
//    PatientRegistration *registrationWindow = new PatientRegistration(tcpSocket, nullptr);
//    registrationWindow->setAttribute(Qt::WA_DeleteOnClose); // 确保窗口关闭时删除对象，防止内存泄漏
//    registrationWindow->show();
//    this->hide(); // 使用 hide() 来隐藏登录窗口
//}
// 确保析构函数被实现
//PatientLogin::~PatientLogin() {
//    if (tcpSocket) {
//        tcpSocket->disconnectFromHost();
//        tcpSocket->waitForDisconnected();
//        delete tcpSocket;
//    }
//}
